import { defineStore } from "pinia";
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
import defAva from "@/assets/images/profile.jpg";

const useUserStore = defineStore("user", {
	state: () => ({
		token: getToken(),
		name: "",
		avatar: "",
		roles: [] as any,
		permissions: [] as any,
		scan: '',
	}),
	actions: {
		// 登录
		userLogin(userInfo: { username: string; password: string; code: string; uuid: string; }) {
			return new Promise<void>((resolve, reject) => {
				login(userInfo)
					.then((res: any) => {
						console.log(res);
						if (res.code === 200) {
							setToken(res.token);
							this.token = res.token;
							resolve();
						}
					})
					.catch((error: any) => {
						reject(error);
					});
			});
		},

		//  // 登录
		//  Login({ commit }, userInfo) {
		// 	const username = userInfo.username.trim()
		// 	const password = userInfo.password
		// 	const code = userInfo.code
		// 	const uuid = userInfo.uuid
		// 	return new Promise((resolve, reject) => {
		// 	  login(username, password, code, uuid).then(res => {
		// 		setToken(res.token)
		// 		commit('SET_TOKEN', res.token)
		// 		resolve()
		// 	  }).catch(error => {
		// 		reject(error)
		// 	  })
		// 	})
		//   },
		/**
		 * 获取用户信息
		 * 
		 * @returns 
		 */
		getInfo() {
			return new Promise((resolve, reject) => {
				// getInfo().then(res => {


				// 	const user = res.user
				// 	const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
				// 	if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
				// 	  commit('SET_ROLES', res.roles)
				// 	  commit('SET_PERMISSIONS', res.permissions)
				// 	} else {
				// 	  commit('SET_ROLES', ['ROLE_DEFAULT'])
				// 	}
				// 	commit('SET_NAME', user.userName)
				// 	commit('SET_AVATAR', avatar)
				// 	commit('SET_SCAN', user.scan)
				// 	resolve(res)
				//   }).catch(error => {
				// 	reject(error)
				//   })
				getInfo()
					.then((res: any) => {
						console.log(res);
						if (res.code === 200) {
							const { user } = res;
							// prettier-ignore
							const avatar = user.avatar == "" || user.avatar == null ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
							if (res.roles && res.roles.length > 0) {
								// 验证返回的roles是否是一个非空数组
								this.roles = res.roles;
								this.permissions = res.permissions;
							} else {
								this.roles = ["ROLE_DEFAULT"];
							}
							this.name = user.userName;
							this.avatar = avatar;
						}
						resolve(res);
					})
					.catch((error) => {
						reject(error);
					});
			});
		},
		// 退出系统
		logOut() {
			return new Promise<void>((resolve, reject) => {
				logout()
					.then(() => {
						this.token = "";
						this.roles = [];
						this.permissions = [];
						removeToken();
						resolve();
					})
					.catch((error) => {
						reject(error);
					});
			});
		},
	},
});
export default useUserStore;
